function convert(input) { alert('Error. Contact us if this keeps happening.'); document.getElementById('modal-contact').classList.add('show'); } var _ctUtsStyles = { plain: { upper: null, lower: null, digit: null }, bold: { upper: 0x1D400, lower: 0x1D41A, digit: 0x1D7CE }, italic: { upper: 0x1D434, lower: 0x1D44E, digit: null }, boldItalic: { upper: 0x1D468, lower: 0x1D482, digit: null }, script: { upper: 0x1D49C, lower: 0x1D4B6, digit: null }, boldScript: { upper: 0x1D4D0, lower: 0x1D4EA, digit: null }, fraktur: { upper: 0x1D504, lower: 0x1D51E, digit: null }, boldFraktur: { upper: 0x1D56C, lower: 0x1D586, digit: null }, doubleStruck: { upper: 0x1D538, lower: 0x1D552, digit: 0x1D7D8 }, sansSerif: { upper: 0x1D5A0, lower: 0x1D5BA, digit: 0x1D7E2 }, sansSerifBold: { upper: 0x1D5D4, lower: 0x1D5EE, digit: 0x1D7EC }, sansSerifItalic: { upper: 0x1D608, lower: 0x1D622, digit: null }, sansSerifBoldItalic: { upper: 0x1D63C, lower: 0x1D656, digit: null }, monospace: { upper: 0x1D670, lower: 0x1D68A, digit: 0x1D7F6 } }; var _ctUtsPatches = { italic: { h: 0x210E }, script: { B: 0x212C, E: 0x2130, F: 0x2131, H: 0x210B, I: 0x2110, L: 0x2112, M: 0x2133, R: 0x211B, e: 0x212F, g: 0x210A, o: 0x2134 }, fraktur: { C: 0x212D, H: 0x210C, I: 0x2111, R: 0x211C, Z: 0x2128 }, doubleStruck: { C: 0x2102, H: 0x210D, N: 0x2115, P: 0x2119, Q: 0x211A, R: 0x211D, Z: 0x2124 } }; var _ctUtsSmallCaps = { a:'ᴀ', b:'ʙ', c:'ᴄ', d:'ᴅ', e:'ᴇ', f:'ꜰ', g:'ɢ', h:'ʜ', i:'ɪ', j:'ᴊ', k:'ᴋ', l:'ʟ', m:'ᴍ', n:'ɴ', o:'ᴏ', p:'ᴘ', q:'ǫ', r:'ʀ', s:'ꜱ', t:'ᴛ', u:'ᴜ', v:'ᴠ', w:'ᴡ', x:'ˣ', y:'ʏ', z:'ᴢ' }; function _ctUtsApply(input, style) { if (!input) return ''; if (style === 'plain') return input; if (style === 'smallCaps') { var out = ''; for (var i = 0; i < input.length; i++) { var ch = input.charAt(i); var low = ch.toLowerCase(); var sc = _ctUtsSmallCaps[low]; if (sc) { out += (ch === low ? sc : ch); } else { out += ch; } } return out; } var map = _ctUtsStyles[style]; if (!map) return input; var patch = _ctUtsPatches[style] || {}; var out2 = ''; for (var j = 0; j < input.length; j++) { var c = input.charCodeAt(j); var raw = input.charAt(j); if (patch[raw] != null) { out2 += String.fromCodePoint(patch[raw]); } else if (c >= 65 && c <= 90 && map.upper != null) { out2 += String.fromCodePoint(map.upper + (c - 65)); } else if (c >= 97 && c <= 122 && map.lower != null) { out2 += String.fromCodePoint(map.lower + (c - 97)); } else if (c >= 48 && c <= 57 && map.digit != null) { out2 += String.fromCodePoint(map.digit + (c - 48)); } else { out2 += raw; } } return out2; } function _ctUtsDecorate(s, opts) { if (!s) return ''; var combiners = ''; if (opts.strike) combiners += '̶'; if (opts.underline) combiners += '̲'; if (opts.overline) combiners += '̅'; if (!combiners) return s; var out = ''; var arr = Array.from(s); for (var i = 0; i < arr.length; i++) { out += arr[i]; if (arr[i] !== '\n' && arr[i] !== '\r') out += combiners; } return out; } function convert(input) { var style = (document.getElementById('uts-style') || {}).value || 'bold'; var strike = !!(document.getElementById('uts-strike') || {}).checked; var underline = !!(document.getElementById('uts-underline') || {}).checked; var overline = !!(document.getElementById('uts-overline') || {}).checked; var styled = _ctUtsApply(input || '', style); return _ctUtsDecorate(styled, { strike: strike, underline: underline, overline: overline }); } $(function(){ $('#uts-style, #uts-strike, #uts-underline, #uts-overline').on('input change', function(){ $('#box1').trigger('keyup'); }); }); var _loadedScripts = {}; function loadScriptPromise(url) { if (_loadedScripts[url]) return _loadedScripts[url]; _loadedScripts[url] = new Promise(function (resolve, reject) { var s = document.createElement('script'); s.src = url; s.onload = resolve; s.onerror = reject; document.head.appendChild(s); }); return _loadedScripts[url]; } function replaceAll(find, replace, str) { return str.replace(new RegExp(find, 'g'), replace); } function beautify(str) { var result = ''; var length = str.length; var i = 0; var braceCountLeft = 0; var braceCountRight = 0; var withinQuotes = false; while (i < length) { var c = str[i]; if (c == '"' && (i == 0 || c[i - 1] != '\\')) { // non-escaped quotes withinQuotes = !withinQuotes; } if (!withinQuotes && (c == '}' || c == '{' || c == ',')) { console.log('Start####' + result); // look back and remove carriage returns and whitespace that are already there var resultIndex = result.length - 1; while (resultIndex >= 0 && (result[resultIndex] == ' ' || result[resultIndex] == '\r' || result[resultIndex] == '\n' || result[resultIndex] == '\t')) { resultIndex = resultIndex - 1; result = result.substr(0, resultIndex + 1); console.log('char ' + result[resultIndex] + '-----' + result + 'zzz ' + result.length + ' ' + resultIndex); } if (c == '{') { braceCountLeft++; result += c + '\r' + GetTabs(braceCountLeft - braceCountRight); } else if (c == '}') { braceCountRight++; // precede with carriage return result += '\r' + GetTabs(braceCountLeft - braceCountRight) + c; } else if (c == ',') { result += c + '\r' + GetTabs(braceCountLeft - braceCountRight); } var nextChar = ''; // advance through whitespace and remove carriage returns that are already there while (i < length && (str[i + 1] == ' ' || str[i + 1] == '\r' || str[i + 1] == '\n' || str[i + 1] == '\t')) { i++; } } else { result += str[i]; } i++; } return result; } function GetTabs(count) { var result = ''; for (var i = 0; i < count; i++) { result += ' '; } return result; }